home *** CD-ROM | disk | FTP | other *** search
/ Robotics & Artificial Int…3 (Professional Edition) / Robotics & Artificial Intelligence Tools 2003 (Professional Edition).iso / neural network tool and application / nsinstall.exe / data1.cab / DLLCust_Files / INPUT / STRANGE.C < prev    next >
Encoding:
C/C++ Source or Header  |  2002-03-08  |  2.7 KB  |  80 lines

  1. // Dynamic link library implementation of a logistic function input source
  2.  
  3. #include "NSDLL.h" 
  4.  
  5. /***************************/
  6. /* Activation of component */
  7. __declspec(dllexport) void performInput(
  8.     DLLData    *instance,    // Pointer to instance data (may be NULL)
  9.     NSFloat    *data,         // Pointer to the data
  10.     int rows,         // Number of rows of data
  11.     int cols         // Number of cols of data
  12.     )
  13. {
  14.     NSFloat a = getFloatParameter(instance, 1, 1);
  15.     NSFloat b = getFloatParameter(instance, 2, 1);
  16.     NSFloat c = getFloatParameter(instance, 3, 1);
  17.     NSFloat d = getFloatParameter(instance, 4, 1);
  18.     NSFloat *lastResult = (NSFloat*)getUserData(instance);
  19.     data[0] = (NSFloat)(sin(a*lastResult[1]) - lastResult[2]*cos(b*lastResult[0]));
  20.     if (rows*cols > 1) {
  21.         data[1] = (NSFloat)(lastResult[2]*sin(c*lastResult[0]) - cos(d*lastResult[1]));
  22.         if (rows*cols > 2) {
  23.             data[2] = (NSFloat)sin(lastResult[0]);
  24.             lastResult[2] = data[2];
  25.         }
  26.         lastResult[1] = data[1];
  27.     }
  28.     lastResult[0] = data[0];
  29. }
  30.  
  31. /******************************************/
  32. /* Called every time the network is reset */
  33. __declspec(dllexport) void networkReset(
  34.     DLLData    *instance    // Pointer to instance data (may be NULL) 
  35.     )
  36. {
  37.     NSFloat Xo = getFloatParameter(instance, 1, 2);
  38.     NSFloat Yo = getFloatParameter(instance, 2, 2);
  39.     NSFloat Zo = getFloatParameter(instance, 3, 2);
  40.     NSFloat *lastData = (NSFloat*)getUserData(instance);
  41.     lastData[0] = Xo;
  42.     lastData[1] = Yo;
  43.     lastData[2] = Zo;
  44. }
  45.  
  46. /******************************************/
  47. /* Management of instance data (OPTIONAL) */
  48. __declspec(dllexport) DLLData *allocInput(
  49.     DLLData    *oldInstance,    // Pointer to the last instance if reallocating
  50.     int rows,         // Number of rows of data
  51.     int cols         // Number of cols of data
  52.     )
  53. {
  54.     DLLData *instance = allocDLLInstance(oldInstance);
  55.     setUserData(instance, calloc(3, sizeof(NSFloat)));
  56.     setParameterName(instance, 1, 1, "a", FALSE);
  57.     setFloatParameter(instance, 1, 1, 2.24f, FALSE);
  58.     setParameterName(instance, 2, 1, "b", FALSE);
  59.     setFloatParameter(instance, 2, 1, 0.43f, FALSE);
  60.     setParameterName(instance, 3, 1, "c", FALSE);
  61.     setFloatParameter(instance, 3, 1, -0.65f, FALSE);
  62.     setParameterName(instance, 4, 1, "d", FALSE);
  63.     setFloatParameter(instance, 4, 1, -2.43f, FALSE);
  64.     setParameterName(instance, 1, 2, "Xo", FALSE);
  65.     setFloatParameter(instance, 1, 2, 0.0f, FALSE);
  66.     setParameterName(instance, 2, 2, "Yo", FALSE);
  67.     setFloatParameter(instance, 2, 2, 0.0f, FALSE);
  68.     setParameterName(instance, 3, 2, "Zo", FALSE);
  69.     setFloatParameter(instance, 3, 2, 0.0f, FALSE);
  70.     networkReset(instance);
  71.     return instance;
  72. }
  73.  
  74. __declspec(dllexport) void freeInput(DLLData *instance)
  75. {
  76.     if (getUserData(instance))
  77.         free(getUserData(instance));
  78.     freeDLLInstance(instance); 
  79. }
  80.